<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns="http://www.w3.org/1999/XSL/Format"
	xmlns:fo="http://www.w3.org/1999/XSL/Format"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:f="livcos.org/ns/xslt/function"
  exclude-result-prefixes="xs f fo">
	
	<xsl:import href="../base.xsl"/>
	
	<!-- unrecognized elements -->
	
	<xsl:template match="/*">
		<root id="{f:object-id(.)}">
			<xsl:call-template name="print_element"/>
		</root>
	</xsl:template>
	
	<xsl:template match="*">
		<xsl:call-template name="print_element"/>
	</xsl:template>
	
	<xsl:template match="fo:* | /fo:*" priority="2">
		<xsl:copy>
			<xsl:apply-templates select="@* | node()"/>
		</xsl:copy>
	</xsl:template>
	
	<xsl:template name="print_element">
		<block color="red">
			<xsl:text><![CDATA[<]]></xsl:text>
			<xsl:value-of select="name(.)" />
			<xsl:for-each select="@*">
				<xsl:text> </xsl:text>
				<xsl:value-of select="name(.)" />
				<xsl:text>="</xsl:text>
				<xsl:value-of select="." />
				<xsl:text>"</xsl:text>
			</xsl:for-each>
			<xsl:for-each select="namespace::*[local-name(.) != 'xml']">
				<xsl:variable name="prefix" select="local-name(.)"/>
				<xsl:variable name="nsUri" select="."/>
				<xsl:if test="not(../../namespace::*[(local-name(.) = $prefix) and (. = $nsUri)])">
					<xsl:text> xmlns</xsl:text>
					<xsl:if test="$prefix != ''">:</xsl:if>
					<xsl:value-of select="$prefix" />="<xsl:value-of select="$nsUri" />
					<xsl:text>"</xsl:text>
				</xsl:if>
			</xsl:for-each>
			<xsl:choose>
				<xsl:when test="node()">
					<xsl:text><![CDATA[>]]></xsl:text>
				</xsl:when>
				<xsl:otherwise>
					<xsl:text>/<![CDATA[>]]></xsl:text>
				</xsl:otherwise>
			</xsl:choose>
		</block>
		<xsl:if test="node()">
			<xsl:apply-templates select="node()"/>
			<block color="red">
				<xsl:text><![CDATA[<]]>/</xsl:text>
				<xsl:value-of select="name(.)" />
				<xsl:text><![CDATA[>]]></xsl:text>
			</block>
		</xsl:if>
	</xsl:template>
	
</xsl:stylesheet>
